<?php

namespace app\adminapi\controller;

use think\Controller;
use think\Request;

class Admin extends BaseApi
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        $params = input();
        $where = [];
        if (!empty($params['keyword'])) {
            $where['a.username'] = ['like', '%' . $params['keyword'] . '%'];
        }
        $list = \app\common\model\Admin::alias('a')
            ->join('pyg_role r', 'a.role_id = r.id', 'LEFT')
            ->field('a.*,r.role_name')
            ->where($where)
            ->paginate(10);
        $this->ok($list);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 保存新建的资源
     *
     * @param \think\Request $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        $params = input();
        // 验证数据
        $validate = $this->validate($params, [
            'username|用户名' => 'require|unique:admin',
            'password|密码' => 'require|length:6,20',
            'role_id|角色' => 'require|integer|gt:0',
            'email|邮箱' => 'require|email',
        ]);
        if ($validate !== true) {
            $this->fail($validate);
        }
        //设置默认密码
        if (empty($params['password'])) {
            $params['password'] = '123456';
        }
        //密码加密
        $params['password'] = encrypt_password($params['password']);
        //设置昵称
        $params['nickname'] = $params['username'];
        //保存到数据库
        $admin = \app\common\model\Admin::create($params, true);
        //返回数据
        $info = \app\common\model\Admin::find($admin['id']);
        $this->ok($info);
    }

    /**
     * 显示指定的资源
     *
     * @param int $id
     * @return \think\Response
     */
    public function read($id)
    {
        $admin = \app\common\model\Admin::find($id);
        if (empty($admin)) {
            $this->fail('管理员不存在');
        }
        $this->ok($admin);
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param int $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param \think\Request $request
     * @param int $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        if ($id == 1) {
            $this->fail('超级管理员不允许修改');
        }
        $params = input();
        // 如果是重置密码
        if (!empty($params['type']) && $params['type'] == 'reset_pwd') {
            $password = encrypt_password('123456');
            \app\common\model\Admin::update(['password' => $password], ['id' => $id], true);
        } else {
            // 验证数据
            $validate = $this->validate($params, [
                'role_id|角色' => 'require|integer|gt:0',
                'email|邮箱' => 'require|email',
                'nickname|昵称' => 'max:50'
            ]);
            if ($validate !== true) {
                $this->fail($validate);
            }
            // 删除不需要的字段
            unset($params['username']);
            unset($params['password']);

            \app\common\model\Admin::update($params, ['id' => $id], true);
        }
        $info = \app\common\model\Admin::find($id);
        $this->ok($info);
    }

    /**
     * 删除指定资源
     *
     * @param int $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //不能删除超级管理员和当前管理员
        if ($id == 1 || $id == input('user_id')) {
            $this->fail('超级管理员和当前管理员不允许删除');
        }
        \app\common\model\Admin::destroy($id);
        $this->ok();
    }
}
